<?php
class User extends AppModel {
	var $name = 'User';
	var $validate = array(
		'group_id' => array(
			'numeric' => array(
				'rule' => array('numeric'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		'username' => array(
			'notempty' => array(
				'rule' => array('minlength',4),
				'message' => 'Nhập tên đăng nhập',
				'allowEmpty' => false,
				'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
			'unique' => array( 
                'rule' => array('checkUnique', 'username'), 
                'message' => 'Tài khoản này tồn tại. Hãy nhập tài khoản khác' 
             )
		),
		'password' => array(
			'notempty' => array(
				'rule' => array('minlength',6),
				'message' => 'Nhập mật khẩu đăng nhập lớn hơn 5 ký tự',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
			// 'passwordSimilar' => array( 
          //      'rule' => 'checkPasswords', 
          //      'message' => 'Mật khẩu không giống nhau.' 
         //) 
		),
		'name' => array(
			'notempty' => array(
				'rule' => array('notempty'),
				'message' => 'Nhập tên người dùng',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		//'brith' => array(
		//	'date' => array(
		//		'rule' => array('date'),
		//		'message' => 'Nhập ngày sinh',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
		//	),
		//),
		'email' => array(
			'email' => array(
				'rule' => array('email'),
				'message' => 'Nhập địa chỉ email',
				'allowEmpty' => false,
				'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
			'unique' => array( 
                'rule' => array('checkUnique', 'email'), 
                'message' => 'Email này tồn tại. Hãy nhập Email khác' 
             )
		),
		//'phone' => array(
		//	'notempty' => array(
		//		'rule' => array('notempty'),
		//		'message' => 'Nhập số điện thoại',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
		//	),
		//),
		//'actived' => array(
		//	'boolean' => array(
		//		'rule' => array('boolean'),
		//		'message' => 'Trạng thái kích hoạt tài khoản',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
		//	),
		//),
	);
	//The Associations below have been created with all possible keys, those that are not needed can be removed

	var $belongsTo = array(
		'Group' => array(
			'className' => 'Group',
			'foreignKey' => 'group_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		),
		'ClassStudent' => array(
			'className' => 'ClassStudent',
			'foreignKey' => 'class_student_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		)
	);

	var $hasMany = array(
		'News' => array(
			'className' => 'News',
			'foreignKey' => 'user_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		),
		'ProjectAssign' => array(
			'className' => 'ProjectAssign',
			'foreignKey' => 'user_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		),
		'ProjectNote' => array(
			'className' => 'ProjectNote',
			'foreignKey' => 'user_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		),
		'ProjectReport' => array(
			'className' => 'ProjectReport',
			'foreignKey' => 'user_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		),
		'ProjectStudent' => array(
			'className' => 'ProjectStudent',
			'foreignKey' => 'user_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		),
		'Project' => array(
			'className' => 'Project',
			'foreignKey' => 'user_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		)
	);
	
	function checkUnique($data, $fieldName) { 
            $valid = false; 
            if(isset($fieldName) && $this->hasField($fieldName)) { 
             $valid = $this->isUnique(array($fieldName => $data)); 
               } 
               return $valid;
	}

	function checkPasswords($data) { 
		if(isset($this->data['User']['password2hashed'])){
			if($data['password'] == $this->data['User']['password2hashed']) 
				return true;
			else
				return false;
		}
		else{
			return true;
		}
		return false; 
	}

}
?>